Oracle row

您所在的位置:网站首页 关联条件 为空值 Oracle row

Oracle row

2024-07-13 14:55| 来源: 网络整理| 查看: 265

在使用row_number() over partition by过程中,发现取得值与预期的结果不符

话不多说,SQL如下

select * from (select faccountnum, faccountcode, faccounttype, forgancode, row_number() over(partition by faccountcode order by fchecktime desc) as rn from qsaccount b where fcheckstate = '1' and faccounttype in ('12', '3', 'dzzh', '16') and faccountcode in ('9040510012269017')) t

row_number() over partition by 的作用就无需赘述了,我只大概讲一下我的业务需求。 由于有些账户他有多个机构,我只取一个,在账户表中按照账号进行分组,然后按照审核时间进行排序,取最新的一条记录 效果如下图所示: 在这里插入图片描述 我们发现,现在的结果是预期的们只需要我们选择rn=1的就是我们想要的结果 然而当我增加上了where rn=1的时候却发生了意想不到的结果,如下图所示: 在这里插入图片描述 他取到的结果却是和我们预期相反。 这个SQL翻来覆去就这么多,想了半天也没想出个结果来。 后来却是发现了了原因: 原来在over partition by order by的时候,我order by的字段fchecktime 他在原表中是一个空(null)值,导致我最终的结果有误,后来,多增加了一个order by 条件,上述问题就解决了 在这里插入图片描述 这个问题看SQL是看不出来的,SQL没问题的情况下就是数据有问题了。Mark一下。 如有问题,请随时联系沟通。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3